import { defineStore } from 'pinia';
import { getMemberInfo, getUserByCode } from '@/api/index';

export const useUserStore = defineStore('userStore', {
  state: () => ({
    // 用户信息
    user: null,
    // 路由信息
    routes: [],
    // 消息消息
    messagesnum: 0,
  }),

  actions: {
    // 获取用户信息
    async getUser() {
      try {
        const res = await getMemberInfo();
        this.user = res.data;
      } catch (error) {
        console.error('获取用户信息时发生错误:', error);
        // 这里可以根据需要抛出错误或者执行其他错误处理逻辑
      }
    },

    // 通过验证码获取用户信息并设置token
    async getUserByCode(code) {
      try {
        const res = await getUserByCode(code);
        const { member, token } = res.data;
        this.setUser(member);
        localStorage.setItem('token', token);
      } catch (error) {
        console.error('通过验证码获取用户信息时发生错误:', error);
      }
    },

    // 设置用户信息
    setUser(user) {
      this.user = user;
    },

    // 设置路由
    setRoutes(routes) {
      this.routes = routes;
    },

    // 清除用户信息和路由，实现登出功能
    signOut() {
      this.user = null;
      this.routes = [];
      localStorage.clear();
    }
  }
});